package ksv.cron.v1;

import ksv.cron.bean.SysCron;

import java.io.Serializable;
import java.util.List;
import java.util.concurrent.DelayQueue;

/**
 * @创建人 wsdc
 * @时间 2021/1/31
 * @描述 定时任务容器
 *
 *  容器，存储具体的数据，不参与业务
 *  <li>    此处没有设计更新，集群更新业务会很复杂，可以选择删除在重新添加
 */
public interface CronContainer {
    /**
     *  {@link #add(SysCron)}           添加
     *  {@link #batchAdd(List)}         批量添加
     *  {@link #list()}                 列表
     *  {@link #get(Serializable)}      根据序列化id查询
     *  {@link #remove(Serializable)}   根据序列化id删除
     *
     *  {@link #queue()}                返回一个延时队列
     */
    void add(SysCron cron);
    void batchAdd(List<SysCron> cronList);
    List<SysCron> list();
    SysCron get(Serializable id);
    SysCron remove(Serializable id);

    DelayQueue<ICron> queue();
}
